home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Whiteline: delta
/
whiteline CD Series - delta.iso
/
dl_serie
/
updates
/
003
/
everest
/
se_test
/
seproto.h
< prev
next >
Wrap
Text File
|
1995-11-25
|
10KB
|
262 lines
/* SE-Protokoll zur Kommunikation zwischen Shells zur Programmentwicklung
* und Editoren.
*
* Dieses Protokoll dient dazu, unter Multitasking-Systemen die Shell
* zur Compilierung und ähnlichen Sachen zu veranlassen, und um Fehler-
* meldungen und/oder Fehlerdateien an den Editor zurückzugeben.
*
* Kommandos bzw. Nachrichten von der Shell zum Editor beginnen
* mit SE_, Nachrichten vom Editor zur Shell beginnen mit ES_
*
* Da teilweise Zeiger auf Speicherbereiche übergeben werden, ist vom
* jeweiligen Absender der Nachricht darauf zu achten, daß diese
* Speicherbereiche vom Empfänger auch lesbar sind (Memory Protection!).
* Dafür sind diese als Readable zu allozieren!
*
* Version Datum Änderungen
* =====================================================================
* 0.1 10.1.94 Erster Entwurf
* 0.2 17.1.94 SE_TERMINATE hinzugefügt
* 0.3 25.1.94 SE_CLOSE hinzugefügt.
* tErrInfo geändert, SE_ERROR geändert
* tShellCommands und tEditCommands korrigiert
*/
#define SE_INIT 0x4200
/* Die Shell fragt an, ob ein Editor das SE-Protokoll
* versteht.
* Wort 3: Ein Bitset, welche Nachrichten die Shell versendet
* Wort 4+5: Ein Bitset, welche Editorkommandos verstanden werden
* Wort 6: Unterstütze Versionsnummer des Protokolls
* Als Antwort erhält es ein ES_OK vom Editor.
*/
#define SE_OK 0x4201
/* Die Shell sagt dem Editor, das sie das Protokoll
* versteht.
* Wort 3: Ein Bitset, welche Nachrichten die Shell versendet
* Wort 4+5: Ein Bitset, welche Editorkommandos verstanden werden
* Wort 6: Unterstütze Versionsnummer des Protokolls
* Wort 7: Die ApId des Programmes, dessen Nachricht beantwortet wird
*/
#define SE_ACK 0x4202
/* Die Shell bestätigt den Empfang eines Editorkommandos und gibt zurück,
* ob das Kommando ausgeführt wird.
* Wort 3: TRUE: Kommando wird verstanden und ausgeführt.
* FALSE: Das Kommando wird nicht verstanden
* Eine SE_ACK mit TRUE sagt nichts darüber aus, ob das Kommando erfolg-
* reich ausgeführt wurde. Es sagt nur, daß die Shell das Kommando
* versteht und ausführen wird!
*/
#define SE_OPEN 0x4203
/* Die Shell sagt dem Editor, daß er einen Text öffnen
* soll. Als Antwort erhält die Shell ein ES_ACK
* Wort 3+4: Ein Zeiger auf den Filenamen des zu öffnenden Files
*/
#define SE_ERROR 0x4204
/* Es ist ein Fehler beim Compilieren aufgetreten.
* Wort 3+4: Ein Zeiger auf eine Infostruktur, die wie folgt
* aufgebaut ist:
* Wort 0+1: Ein Zeiger auf den Namen des compilierten Textes.
* Wort 2+3: Ein Zeiger auf den Text der Fehlermeldung
* Wort 4 : Die Fehlernummer
* Mit ES_ACK bestätigt der Editor die Meldung.
*/
#define SE_ERRFILE 0x4205
/* Es sind Fehler aufgetreten. Die Fehlermeldungen stehen in einem
* Errorfile, welches in der Message spezifiziert wird.
* Wort 3+4: Ein Zeiger auf den Filenamen des Errorfiles mit den
* Fehlermeldungen
* Wort 5+6: Ein Zeiger auf den Namen des compilierten Textes
* Mit ES_ACK bestätigt der Editor die Meldung.
*/
#define SE_PROJECT 0x4206
/* Die Shell teilt dem Editor mit, daß das Projekt
* geändert wurde. Der Filename des aktuellen
* Projektfiles wird als Parameter übergeben
* Wort 3+4: Ein Zeiger auf den Namen des Projektfiles
* Der Editor bestätigt mit ES_ACK.
* Eine vernünftige Reaktion des Editors wäre es in dem Fall,
* ebenfalls das Projekt zu wechseln, sofern er diese unterstützt.
*/
#define SE_QUIT 0x4207
/* Die Shell teilt dem Editor mit, daß sie jetzt beendet wird.
* Der Editor sollte in dem Fall die Shell als Kommunikationspartner
* vergessen.
* Parameter gibt es keine.
* Es wird keine Antwort erwartet!
*/
#define SE_TERMINATE 0x4208
/* Die Shell teilt dem Editor mit, daß dieser sich beenden soll.
* Der Editor sollte in dem Fall sich selbst beenden und seinen ganz
* normalen Terminierungsprozeß durchlaufen (und in dem auch ein ES_QUIT
* schicken!). Der Grund für so eine Meldung der Shell könnte zum Beispiel
* zu wenig Speicher zum compilieren sein.
* Mit ES_ACK bestätigt der Editor die Meldung.
*/
#define SE_CLOSE 0x4209
/* Die Shell teilt dem Editor mit, daß dieser alle Texte sichern soll.
* Der Editor sollte bei geänderten Texten vorher nachfragen.
* Mit ES_ACK bestätigt der Editor die Meldung.
*/
#define ES_INIT 0x4240
/* Ein Editor fragt an, ob eine Shell das SE-Protokoll versteht.
* Wort 3: Ein Bitset, welche Shellnachrichten verstanden werden
* Wort 4+5: Ein Bitset, welche Editorkommandos versendet werden
* Wort 6: Unterstütze Versionsnummer des Protokolls
* Als Antwort erhält es SE_OK von der Shell
*/
#define ES_OK 0x4241
/* Der Editor beantwortet die Anfrage der Shell nach dem Protokoll.
* Wort 3: Ein Bitset, welche Shellnachrichten verstanden werden
* Wort 4+5: Ein Bitset, welche Editorkommandos versendet werden
* Wort 6: Unterstütze Versionsnummer des Protokolls
* Wort 7: Die ApId des Programmes, dessen Nachricht beantwortet wird
*/
#define ES_ACK 0x4242
/* Der Editor bestätigt den Empfang des Kommandos
* Wort 3: TRUE: Kommando wird verstanden und ausgeführt.
* FALSE: Das Kommando wird nicht verstanden
* Eine ES_ACK mit TRUE sagt nichts darüber aus, ob das Kommando erfolg-
* reich ausgeführt wurde. Es sagt nur, daß der Editor das Kommando
* versteht und ausführen wird!
*/
#define ES_COMPILE 0x4243
/* Der Editor sagt der Shell, daß sie ein File übersetzen soll.
* Ein Pointer auf den Dateinamen wird in der Message übergeben.
* Wort 3+4: Zeiger auf den Namen der zu compilierenden Datei.
* Diese Nachricht muß mit SE_ACK bestätigt werden.
*/
#define ES_MAKE 0x4244
/* Der Editor sagt der Shell, daß sie ein Make ausführen soll.
* Ein Filename kann in der Message übergeben werden, muß aber
* nicht gesetzt sein und muß von der Shell auch nicht beachtet
* werden!
* Wort 3+4: Zeiger auf den Namen des Makefiles (oder NULL)
* Die Shell bestätigt mit SE_ACK.
*/
#define ES_MAKEALL 0x4245
/* Der Editor sagt der Shell, daß ein komplettes Make All ausgeführt
* werden soll. Ein Filename für das Makefile kann (muß nicht) in
* der Message übergeben werden.
* Wort 3+4: Zeiger auf den Namen des Makefiles (oder NULL)
* Die Shell bestätigt mit SE_ACK.
*/
#define ES_LINK 0x4246
/* Der Editor sagt der Shell, daß das Programm
* gelinkt werden soll. Ein Filename kann
* in der Message übergeben werden, muß aber
* nicht unbedingt beachtet werden von der Shell!
* Wort 3+4: Zeiger auf den Namen der Source, die gelinkt werden soll
* (oder NULL)
* Die Shell bestätigt mit SE_ACK.
*/
#define ES_EXEC 0x4247
/* Der Editor sagt der Shell, daß das Programm
* zu der Source ausgeführt werden soll. Ein
* Filename kann übergeben werden, muß von der
* Shell aber nicht beachtet werden.
* Wort 3+4: Zeiger auf den Namen des auszuführenden Files (oder NULL)
* Bei einer Sourcedatei ist diese ggf. noch zu
* compilieren und/oder zu linken
* Die Shell bestätigt mit SE_ACK.
*/
#define ES_MAKEEXEC 0x4248
/* Die Shell soll ein Make ausführen und danach das Programm ausführen.
* Ein Filename für das Makefile kann (muß nicht) in der Message
* übergeben werden.
* Wort 3+4: Zeiger auf den Namen des Makefiles (oder NULL)
* Die Shell bestätigt mit SE_ACK.
*/
#define ES_PROJECT 0x4249
/* Der Editor teilt der Shell mit, daß das Project
* geändert/gewechselt wurde. Der Filename des
* Projektfiles wird als Parameter in der Message
* übergeben.
* Wort 3+4: Zeiger auf den Namen des Projektfiles
* Die Shell bestätigt mit SE_ACK.
* Eine vernünftige Reaktion der Shell wäre in dem Fall, ebenfalls
* das Projekt zu wechseln, sofern es diese unterstützt.
*/
#define ES_QUIT 0x424A
/* Der Editor teilt der Shell mit, daß er jetzt beendet wird.
* Die Shell sollte in dem Fall den Editor als Kommunikationspartner
* vergessen.
* Parameter gibt es keine.
* Es wird keine Antwort erwartet!
*/
#define SEPROTOVERSION 0x100 /* Die Versionsnummer des Protokolls.
* Highbyte ist die Major Number
* Lowbyte ist die Lower Number
*/
/* Typdefinitionen für die Nachrichten
*/
/* Dies definiert die einzelnen Bits, welche Nachrichten unterstützt werden
*/
/* Shell-Kommandos
*/
#define _SEINIT 0x0001
#define _SEOK 0x0002
#define _SEACK 0x0004
#define _SEOPEN 0x0008
#define _SEERROR 0x0010
#define _SEERRFILE 0x0020
#define _SEPROJECT 0x0040
#define _SEQUIT 0x0080
#define _SETERMINATE 0x0100
#define _SECLOSE 0x0200
/* Editor-Kommandos
*/
#define _ESINIT 0x0001
#define _ESOK 0x0002
#define _ESACK 0x0004
#define _ESCOMPILE 0x0008
#define _ESMAKE 0x0010
#define _ESMAKEALL 0x0020
#define _ESLINK 0x0040
#define _ESEXEC 0x0080
#define _ESMAKEEXEC 0x0100
#define _ESPROJECT 0x0200
#define _ESQUIT 0x0400
typedef struct
{
char *errFile; /* Zeiger auf den Namen der compilierten Datei
*/
char *errMess; /* Zeiger auf die Fehlermeldung
*/
int errNum; /* Die Fehlernummer
*/
long errLine; /* Die fehlerhafte Zeile
*/
int errRow; /* Die Spalte mit dem Fehler (oder 0)
*/
} ERRINFO;